/**
 * 给定一个非负整数，你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
 */
class MaximumSwap {
    public int maximumSwap(int num) {
        char[] charArray=String.valueOf(num).toCharArray();
        int n=charArray.length;
        int maxIdx=n-1;
        int idx1=-1;
        int idx2=-1;
        for(int i=n-1;i>=0;i--) {
            if(charArray[i]>charArray[maxIdx]) {
                maxIdx=i;
            } else if(charArray[i]<charArray[maxIdx]) {
                idx1=i;
                idx2=maxIdx;
            }
        }
        if(idx1>=0) {
            char tmp=charArray[idx1];
            charArray[idx1]=charArray[idx2];
            charArray[idx2]=tmp;
            return Integer.parseInt(new String(charArray));
        } else {
            return num;
        }
    }
}